package chai.ningning.bytes;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

/**
 * 1、read( byte[] )方法用于从字节输入流中读取一批字节到指定数组中并返回实际读取到的字节
 * 2、如果 read( byte[] ) 没有读取到任何内容，则返回 -1
 */
public class InputStreamTest3 {

    public static void main(String[] args) throws IOException {

        String pathname = "files-and-streams-1/src/chai/ningning/bytes/InputStreamTest3.java";
        File fod = new File(pathname);
        // 创建一个可以读取指定文件中的内容的 字节输入流
        InputStream in = new FileInputStream(fod);

        // 声明一个数组，用来缓存从字节输入流中读取到的字节们
        byte[] buffer = new byte[1024]; // 1024 bytes ==> 1Kb
        int n; // 声明一个变量，用来记录实际从字节输入流中读取到的有效字节数

        // 1、尝试从字节输入流中读取buffer.length个字节到buffer数组中
        // 2、返回从字节输入流中实际读取到的有效字节输
        // 3、最后判断实际读取到的有效字节数是否不等于-1
        while ((n = in.read(buffer)) != -1) {
            // 将本次循环实际读取到的有效字节按照 系统平台默认的字符编码 创建 String实例
            String s = new String(buffer, 0, n);
            System.out.print(s);
        }

        // 关闭流
        in.close(); // IOException
    }
}